package com.zhentao;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.TextModerationPlusRequest;
import com.aliyun.green20220302.models.TextModerationPlusResponse;
import com.aliyun.green20220302.models.TextModerationPlusResponseBody;
import com.aliyun.teaopenapi.models.Config;
import lombok.SneakyThrows;

/**
 * @Date 2024/5/16 10:29
 * @Author xdm
 **/

public class TextModerationPlusUtil {
        @SneakyThrows//忽略异常
        public static ResponseResult checkContent(String content) {
            Config config = new Config();
            /**
             * 阿里云账号AccessKey拥有所有API的访问权限，建议您使用RAM用户进行API访问或日常运维。
             * 常见获取环境变量方式：
             * 方式一：
             *     获取RAM用户AccessKey ID：System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             *     获取RAM用户AccessKey Secret：System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             * 方式二：
             *     获取RAM用户AccessKey ID：System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
             *     获取RAM用户AccessKey Secret：System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            config.setAccessKeyId("LTAI5tCWoFsxs5F1YJyiSjgH");
            config.setAccessKeySecret("0I80LZK3evofnQivSOvFrcAL7KYvYO");
            //接入区域和地址请根据实际情况修改
            config.setRegionId("cn-shanghai");
            config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
            //连接时超时时间，单位毫秒（ms）。
            config.setReadTimeout(6000);
            //读取时超时时间，单位毫秒（ms）。
            config.setConnectTimeout(3000);
            //设置http代理。
            //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
            //设置https代理。
            //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
            Client client = new Client(config);

            JSONObject serviceParameters = new JSONObject();
            serviceParameters.put("content", content);

            TextModerationPlusRequest textModerationPlusRequest = new TextModerationPlusRequest();
            // 检测类型
            textModerationPlusRequest.setService("comment_detection_pro");
            textModerationPlusRequest.setServiceParameters(serviceParameters.toJSONString());

            try {
                TextModerationPlusResponse response = client.textModerationPlus(textModerationPlusRequest);
                if (response.getStatusCode() == 200) {
                    TextModerationPlusResponseBody result = response.getBody();
                    System.out.println(JSON.toJSONString(result));
                    System.out.println("requestId = " + result.getRequestId());
                    System.out.println("code = " + result.getCode());
                    System.out.println("msg = " + result.getMessage());
                    Integer code = result.getCode();
                    if (200 == code) {
                        TextModerationPlusResponseBody.TextModerationPlusResponseBodyData data = result.getData();
                        System.out.println(JSON.toJSONString(data, true));

                        String resultData = JSON.toJSONString(data, true);
                        if (resultData.contains("nonLabel")) {  //审核通过
                            return ResponseResult.okResult(600, "审核通过");

                        } else {
                            //把所有的分数给获取到，取最大的值，如果最大的值>80   - 拒绝
                            //把所有的分数给获取到，取最大的值，如果最大的值<50   - 通过
                            //50-80  --人工
                            return ResponseResult.errorResult(601, "审核拒绝");
                        }


                    } else {
                        System.out.println("text moderation not success. code:" + code);
                        return ResponseResult.errorResult(602, "转人工");
                    }
                } else {
                    //code不是200，说明调用错误    -- 人工


                    System.out.println("response not success. status:" + response.getStatusCode());
                    return ResponseResult.errorResult(602, "转人工");
                }
            } catch (Exception e) {
                e.printStackTrace();
                return ResponseResult.errorResult(602, "转人工");
            }
        }
}
